package com.flazy;
import java.awt.BorderLayout;
import java.io.File;

import javax.swing.JPanel;
import chrriis.dj.nativeswing.swtimpl.components.JWebBrowser;
import chrriis.dj.nativeswing.swtimpl.components.WebBrowserAdapter;
import chrriis.dj.nativeswing.swtimpl.components.WebBrowserNavigationEvent;
import chrriis.dj.nativeswing.swtimpl.components.WebBrowserWindowWillOpenEvent;

public class BrowserPanel extends JPanel {
	private static final long serialVersionUID = -5986084921681429132L;
	private static JWebBrowser browser;
	private static String homePage = BrowserFrame.homePage;//主页地址
	public BrowserPanel() {
		setLayout(new BorderLayout(0, 0));//设置窗口布局
		//setBorder(new EmptyBorder(5, 5, 5, 5));//设置边框间距
		File localFile = new File(BrowserFrame.localPage);//读取本地文件
		homePage = (localFile.exists())?localFile.toURI().toString():homePage;//如果当前文件有index.html页面则直接打开本地文件
		JWebBrowser webBrowser = new JWebBrowser();//新建浏览器对象
		webBrowser.navigate(homePage);//指定浏览器网页地址
		webBrowser.setBarsVisible(false);//设置浏览器为显示状态
		//webBrowser.setButtonBarVisible(true);//显示前进、后退、刷新按钮
		BrowserPanel.browser =webBrowser;//将新窗口赋值给变量
		addWebBrowserListener(BrowserPanel.this, webBrowser);//添加监听事件
		add(webBrowser, BorderLayout.CENTER);//将浏览器添加到主窗口
	}
	/**
	 * 添加页面监听事件
	 * @param browserPanel
	 * @param webBrowser
	 */
	private static void addWebBrowserListener(final JPanel browserPanel, final JWebBrowser webBrowser) {
		webBrowser.addWebBrowserListener(new WebBrowserAdapter() {//注册监听事件
			/**
			 * 在浏览器内容改变时执行
			 */
			@Override
			public void locationChanging(WebBrowserNavigationEvent e) {
				webBrowser.setBarsVisible(false);//设置所有菜单、按钮、地址栏、状态栏都不显示
				//webBrowser.setButtonBarVisible(true);//显示前进、后退、刷新按钮
				
				super.locationChanging(e);
			}
			/**
			 * 将要打开新窗口时执行
			 */
			@Override
			public void windowWillOpen(WebBrowserWindowWillOpenEvent e) {
				webBrowser.disposeNativePeer();//注销原浏览器页面
				webBrowser.removeAll();//删除原浏览器显示内容
				browserPanel.removeAll();//删除主窗口所有内容
				
				JWebBrowser newWebBrowser = e.getNewWebBrowser();//得到新窗口内容
				BrowserPanel.browser =newWebBrowser;//将新窗口赋值给变量
				addWebBrowserListener(browserPanel, newWebBrowser);//给新窗口添加监听事件				
				browserPanel.add(newWebBrowser, BorderLayout.CENTER);//将新窗口添加到主窗口中
				super.windowWillOpen(e);
			}
		});
	}
	/**
	 * 返回浏览器窗口
	 * @return
	 */
	public static JWebBrowser getWebBrowser() {
		return browser;
	}
	/**
	 * 返回流浏览器主页
	 * @return
	 */
	public static String getHomePage() {
		return homePage;
	}
}
